﻿namespace Dcms.DAL
{
    using Dcms.BaseLib;
    using Dcms.IDAL;
    using Dcms.Model;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;

    public class Dcms_LinkDAL : IDcms_LinkDAL
    {
        public Dcms_LinkModel AddModel(Dcms_LinkModel model)
        {
            string sQLString = "insert into Dcms_Link(Link_Title,Link_Url,Link_Pic,Link_Intro,Link_AddTime,Link_State,Link_Order,Link_CateId,Link_ExFlag1,Link_ExFlag2,Link_ExFlag3,Link_ExFlag4,Link_ExFlag5,Link_ExFlag6,Link_ExFlag7,Link_ExFlag8,Link_ExFlag9,Link_ExFlag10) values(@Link_Title,@Link_Url,@Link_Pic,@Link_Intro,@Link_AddTime,@Link_State,@Link_Order,@Link_CateId,@Link_ExFlag1,@Link_ExFlag2,@Link_ExFlag3,@Link_ExFlag4,@Link_ExFlag5,@Link_ExFlag6,@Link_ExFlag7,@Link_ExFlag8,@Link_ExFlag9,@Link_ExFlag10) SELECT @NewId=@@Identity";
            SqlParameter[] cmdParms = new SqlParameter[] { 
                new SqlParameter("@NewId", SqlDbType.Int), new SqlParameter("@Link_Title", SqlDbType.VarChar), new SqlParameter("@Link_Url", SqlDbType.VarChar), new SqlParameter("@Link_Pic", SqlDbType.VarChar), new SqlParameter("@Link_Intro", SqlDbType.Text), new SqlParameter("@Link_AddTime", SqlDbType.DateTime), new SqlParameter("@Link_State", SqlDbType.VarChar), new SqlParameter("@Link_Order", SqlDbType.Int), new SqlParameter("@Link_CateId", SqlDbType.Int), new SqlParameter("@Link_ExFlag1", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag2", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag3", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag4", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag5", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag6", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag7", SqlDbType.VarChar), 
                new SqlParameter("@Link_ExFlag8", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag9", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag10", SqlDbType.VarChar)
             };
            cmdParms[0].Direction = ParameterDirection.Output;
            cmdParms[1].Value = model.Link_Title;
            cmdParms[2].Value = model.Link_Url;
            cmdParms[3].Value = model.Link_Pic;
            cmdParms[4].Value = model.Link_Intro;
            cmdParms[5].Value = model.Link_AddTime;
            cmdParms[6].Value = model.Link_State;
            cmdParms[7].Value = model.Link_Order;
            cmdParms[8].Value = model.Link_CateId;
            cmdParms[9].Value = model.Link_ExFlag1;
            cmdParms[10].Value = model.Link_ExFlag2;
            cmdParms[11].Value = model.Link_ExFlag3;
            cmdParms[12].Value = model.Link_ExFlag4;
            cmdParms[13].Value = model.Link_ExFlag5;
            cmdParms[14].Value = model.Link_ExFlag6;
            cmdParms[15].Value = model.Link_ExFlag7;
            cmdParms[0x10].Value = model.Link_ExFlag8;
            cmdParms[0x11].Value = model.Link_ExFlag9;
            cmdParms[0x12].Value = model.Link_ExFlag10;
            SqlHelper.ExecuteSql(sQLString, cmdParms);
            model.Link_Id = (int) cmdParms[0].Value;
            return model;
        }

        public bool CopyLink(int SourceCateID, int DestCateID)
        {
            string sQLString = "insert into Dcms_Link (Link_Title, Link_Url, Link_Pic, Link_Intro, Link_AddTime, Link_State, Link_Order, Link_CateId, Link_ExFlag1, Link_ExFlag2, Link_ExFlag3, Link_ExFlag4, Link_ExFlag5, Link_ExFlag6, Link_ExFlag7, Link_ExFlag8, Link_ExFlag9, Link_ExFlag10)";
            sQLString = sQLString + "select @DestCateID, Link_Title, Link_Url, Link_Pic, Link_Intro, Link_AddTime, Link_State, Link_Order, Link_CateId, Link_ExFlag1, Link_ExFlag2, Link_ExFlag3, Link_ExFlag4, Link_ExFlag5, Link_ExFlag6, Link_ExFlag7, Link_ExFlag8, Link_ExFlag9, Link_ExFlag10 from Dcms_Link where Link_CateId=@SourceCateID";
            SqlParameter[] cmdParms = new SqlParameter[] { new SqlParameter("@SourceCateID", SqlDbType.Int), new SqlParameter("@DestCateID", SqlDbType.Int) };
            cmdParms[0].Value = SourceCateID;
            cmdParms[1].Value = DestCateID;
            return SqlHelper.ExecuteSql(sQLString, cmdParms) > 0;
        }

        public IList<Dcms_LinkModel> DataSetToList(DataSet ds)
        {
            IList<Dcms_LinkModel> list = new List<Dcms_LinkModel>();
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                Dcms_LinkModel item = new Dcms_LinkModel();
                if (ds.Tables[0].Rows[i]["Link_Id"].ToString() != "") item.Link_Id = int.Parse(ds.Tables[0].Rows[i]["Link_Id"].ToString());
                item.Link_Title = ds.Tables[0].Rows[i]["Link_Title"].ToString();
                item.Link_Url = ds.Tables[0].Rows[i]["Link_Url"].ToString();
                item.Link_Pic = ds.Tables[0].Rows[i]["Link_Pic"].ToString();
                item.Link_Intro = ds.Tables[0].Rows[i]["Link_Intro"].ToString();
                if (ds.Tables[0].Rows[i]["Link_AddTime"].ToString() != "") item.Link_AddTime = DateTime.Parse(ds.Tables[0].Rows[i]["Link_AddTime"].ToString());
                item.Link_State = ds.Tables[0].Rows[i]["Link_State"].ToString();
                if (ds.Tables[0].Rows[i]["Link_Order"].ToString() != "") item.Link_Order = int.Parse(ds.Tables[0].Rows[i]["Link_Order"].ToString());
                if (ds.Tables[0].Rows[i]["Link_CateId"].ToString() != "") item.Link_CateId = int.Parse(ds.Tables[0].Rows[i]["Link_CateId"].ToString());
                item.Link_ExFlag1 = ds.Tables[0].Rows[i]["Link_ExFlag1"].ToString();
                item.Link_ExFlag2 = ds.Tables[0].Rows[i]["Link_ExFlag2"].ToString();
                item.Link_ExFlag3 = ds.Tables[0].Rows[i]["Link_ExFlag3"].ToString();
                item.Link_ExFlag4 = ds.Tables[0].Rows[i]["Link_ExFlag4"].ToString();
                item.Link_ExFlag5 = ds.Tables[0].Rows[i]["Link_ExFlag5"].ToString();
                item.Link_ExFlag6 = ds.Tables[0].Rows[i]["Link_ExFlag6"].ToString();
                item.Link_ExFlag7 = ds.Tables[0].Rows[i]["Link_ExFlag7"].ToString();
                item.Link_ExFlag8 = ds.Tables[0].Rows[i]["Link_ExFlag8"].ToString();
                item.Link_ExFlag9 = ds.Tables[0].Rows[i]["Link_ExFlag9"].ToString();
                item.Link_ExFlag10 = ds.Tables[0].Rows[i]["Link_ExFlag10"].ToString();
                list.Add(item);
            }
            return list;
        }

        public bool DeleteAllCheck(string AllID)
        {
            return SqlHelper.ExecuteSql("delete from Dcms_Link where Link_Id In (" + AllID + ")", null) > 0;
        }

        public void DeleteModelByID(int ID)
        {
            string sQLString = "delete from Dcms_Link where Link_Id=@Link_Id";
            SqlParameter[] cmdParms = new SqlParameter[] { new SqlParameter("@Link_Id", SqlDbType.Int) };
            cmdParms[0].Value = ID;
            SqlHelper.ExecuteSql(sQLString, cmdParms);
        }

        public string GetDataCount(string SqlStr)
        {
            return SqlHelper.GetNoteCount(SqlStr).ToString();
        }

        public IList<Dcms_LinkModel> GetDataListByPage(string SqlStr, int CurPage, int PageSize)
        {
            return this.DataSetToList(SqlHelper.CreateDataSet(SqlStr, (CurPage - 1) * PageSize, PageSize));
        }

        public Dcms_LinkModel GetModelByID(int ID)
        {
            string sQLString = "select * from Dcms_Link where Link_Id=@Link_Id";
            SqlParameter[] cmdParms = new SqlParameter[] { new SqlParameter("@Link_Id", SqlDbType.Int) };
            cmdParms[0].Value = ID;
            Dcms_LinkModel model = new Dcms_LinkModel();
            DataSet ds = SqlHelper.CreateDataSet(sQLString, cmdParms);
            IList<Dcms_LinkModel> list = this.DataSetToList(ds);
            return ((list.Count > 0) ? list[0] : null);
        }

        public DataSet GetModelList()
        {
            string sql = "select * from Dcms_Link";
            return SqlHelper.CreateDataSet(sql);
        }

        public Dcms_LinkModel GetNewModelByCatID(int CatID)
        {
            return null;
        }

        public bool MoveLink(int SourceCateID, int DestCateID)
        {
            string sQLString = "update Dcms_Link set Link_CateId=@DestCateID where Link_CateId=@SourceCateID";
            SqlParameter[] cmdParms = new SqlParameter[] { new SqlParameter("@SourceCateID", SqlDbType.Int), new SqlParameter("@DestCateID", SqlDbType.Int) };
            cmdParms[0].Value = SourceCateID;
            cmdParms[1].Value = DestCateID;
            return SqlHelper.ExecuteSql(sQLString, cmdParms) > 0;
        }

        public Dcms_LinkModel Update(Dcms_LinkModel model)
        {
            string sQLString = "update Dcms_Link set Link_Title=@Link_Title,Link_Url=@Link_Url,Link_Pic=@Link_Pic,Link_Intro=@Link_Intro,Link_AddTime=@Link_AddTime,Link_State=@Link_State,Link_Order=@Link_Order,Link_CateId=@Link_CateId,Link_ExFlag1=@Link_ExFlag1,Link_ExFlag2=@Link_ExFlag2,Link_ExFlag3=@Link_ExFlag3,Link_ExFlag4=@Link_ExFlag4,Link_ExFlag5=@Link_ExFlag5,Link_ExFlag6=@Link_ExFlag6,Link_ExFlag7=@Link_ExFlag7,Link_ExFlag8=@Link_ExFlag8,Link_ExFlag9=@Link_ExFlag9,Link_ExFlag10=@Link_ExFlag10 where Link_Id=@Link_Id";
            SqlParameter[] cmdParms = new SqlParameter[] { 
                new SqlParameter("@Link_Title", SqlDbType.VarChar), new SqlParameter("@Link_Url", SqlDbType.VarChar), new SqlParameter("@Link_Pic", SqlDbType.VarChar), new SqlParameter("@Link_Intro", SqlDbType.Text), new SqlParameter("@Link_AddTime", SqlDbType.DateTime), new SqlParameter("@Link_State", SqlDbType.VarChar), new SqlParameter("@Link_Order", SqlDbType.Int), new SqlParameter("@Link_CateId", SqlDbType.Int), new SqlParameter("@Link_ExFlag1", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag2", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag3", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag4", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag5", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag6", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag7", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag8", SqlDbType.VarChar), 
                new SqlParameter("@Link_ExFlag9", SqlDbType.VarChar), new SqlParameter("@Link_ExFlag10", SqlDbType.VarChar), new SqlParameter("@Link_Id", SqlDbType.Int)
             };
            cmdParms[0].Value = model.Link_Title;
            cmdParms[1].Value = model.Link_Url;
            cmdParms[2].Value = model.Link_Pic;
            cmdParms[3].Value = model.Link_Intro;
            cmdParms[4].Value = model.Link_AddTime;
            cmdParms[5].Value = model.Link_State;
            cmdParms[6].Value = model.Link_Order;
            cmdParms[7].Value = model.Link_CateId;
            cmdParms[8].Value = model.Link_ExFlag1;
            cmdParms[9].Value = model.Link_ExFlag2;
            cmdParms[10].Value = model.Link_ExFlag3;
            cmdParms[11].Value = model.Link_ExFlag4;
            cmdParms[12].Value = model.Link_ExFlag5;
            cmdParms[13].Value = model.Link_ExFlag6;
            cmdParms[14].Value = model.Link_ExFlag7;
            cmdParms[15].Value = model.Link_ExFlag8;
            cmdParms[0x10].Value = model.Link_ExFlag9;
            cmdParms[0x11].Value = model.Link_ExFlag10;
            cmdParms[0x12].Value = model.Link_Id;
            SqlHelper.ExecuteSql(sQLString, cmdParms);
            return model;
        }

        public bool UpdateState(string AllID, int StateValue)
        {
            return SqlHelper.ExecuteSql(string.Concat(new object[] { "Update Dcms_Link Set Link_State='", StateValue, "' where Link_Id In (", AllID, ")" }), null) > 0;
        }
    }
}

